<?php

class procesor
{
	private $presentation;
	private $entity;
	private $entity_group;
	private $mapper;

	public function __construct()
	{
		$this->presentation = new presentation;
		$this->entity = new entity;
		$this->mapper = new mapper;
	}

	public function index()
	{
		try
		{
			$users = $this->mapper->get_all_users();

			if($users != false)
			{
				$i = 0;
				while($row = mysql_fetch_array($users))
				{
					$entity[$i] = new entity;
					$entity[$i++]->setAll_fromDB($row);
				}

				$this->presentation->index($entity);
			}
			else
			{
				$this->presentation->index(null, "empty_result");
			}
		}
		catch(Exception $e)
		{
			$this->presentation->index(null, "thrown_exception", $e->getMessage());
		}
	}

	public function add_user()
	{
		$this->presentation->user_form();
	}

	public function action_add_user()
	{
		try
		{
			$name = trim($_POST["name"]);
			$password = trim($_POST["password"]);
			$email = trim($_POST["email"]);

			if(empty($name))
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Prosím, vyplnte jméno uživatele.</p>";
			}
			else if(empty($password))
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Prosím, vyplnte heslo pro uživatele.</p>";
			}
			else if(empty($email))
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Prosím, zadejte email pro uživatele.</p>";
			}
			else if(strlen($name) < 4)
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Jméno musí mít minimálně 4 znaky.</p>";
			}
			else if(strlen($password) < 5)
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Heslo musí mít minimálně 5 znaků.</p>";
			}
			else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
			{
				echo "<p class='ui-state-highlight ui-corner-all'>Email nemá správný tvar.</p>";
			}
			else
			{
				$this->entity->setAll($_POST);
				$add = $this->mapper->add_user($this->entity);

				if($add)
				{
					echo "<p class='ui-corner-all uspech'>Nový uživatel byl úspěšně vytvořen.</p>";
					echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
				}
				else
				{
					echo "<p class='ui-state-highlight'>Uživatele se nepodařilo vytvořit.</p>";
					echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
				}
			}
		}
		catch(Exception $e)
		{
			echo "<p class='ui-state-error ui-corner-all'>".$e->getMessage()."</p>";
		}
	}

	public function edit_user()
	{
		try
		{
			if(DEMO == true && $_GET["id"] == 1)
			{
				echo "<p class='ui-state-error ui-corner-all'><b>Omezení demo verze</b>: V demo verzi nelze upravit hlavního administrátora!</p>";
			}
			else
			{
				$user = $this->mapper->get_user_by_id($_GET["id"]);

				if($user != false)
				{
					$row = mysql_fetch_array($user);
					$this->entity->setAll_fromDB($row);

					$this->presentation->user_form($this->entity);
				}
				else
				{
					echo "<p class='ui-state-error ui-corner-all'><b>Neplatné ID</b>: Uživatel se zadaným ID nebyl v databázi nalezen.</p>";
				}
			}
		}
		catch(Exception $e)
		{
			echo "<p class='ui-state-error ui-corner-all'>".$e->getMessage()."</p>";
		}
	}

	public function action_edit_user()
	{
		try
		{
			if(DEMO == true && $_GET["id"] == 1)
			{
				echo "<p class='ui-state-error ui-corner-all'><b>Omezení demo verze</b>: Nelze upravit hlavního administrátora!</p>";
			}
			else
			{
				$name = trim($_POST["name"]);
				$password = trim($_POST["password"]);
				$email = trim($_POST["email"]);

				if(empty($name))
				{
					echo "<p class='ui-state-highlight ui-corner-all'>Prosím, vyplnte jméno uživatele.</p>";
				}
				else if(empty($email))
				{
					echo "<p class='ui-state-highlight ui-corner-all'>Prosím, zadejte email pro uživatele.</p>";
				}
				else if(strlen($name) < 4)
				{
					echo "<p class='ui-state-highlight ui-corner-all'>Jméno musí mít minimálně 4 znaky.</p>";
				}
				else if(!empty($password) && strlen($password) < 5)
				{
					echo "<p class='ui-state-highlight ui-corner-all'>Heslo musí mít minimálně 5 znaků.</p>";
				}
				else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
				{
					echo "<p class='ui-state-highlight ui-corner-all'>Email nemá správný tvar.</p>";
				}
				else
				{
					$this->entity->setAll($_POST);
					$edit = $this->mapper->edit_user($this->entity);

					if($edit)
					{
						echo "<p class='ui-corner-all uspech'>Uživatelská data byla upravena.</p>";
						echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
					}
					else
					{
						echo "<p class='ui-corner-all uspech'>Úprava uživatelských dat se nezdařila.</p>";
						echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
					}
				}
			}
		}
		catch(Exception $e)
		{
			echo "<p class='ui-state-error ui-corner-all'>".$e->getMessage()."</p>";
		}
	}

	public function delete_user()
	{
		if(DEMO == true && $_GET["id"] == 1)
		{
			echo "<p class='ui-state-error ui-corner-all'><b>Omezení demo verze</b>: Nelze smazat hlavního administrátora!</p>";
		}
		else
		{
			$this->presentation->delete_user();
		}
	}

	public function action_delete_user()
	{
		try
		{
			if(DEMO == true && $_GET["id"] == 1)
			{
				echo "<p class='ui-state-error ui-corner-all'><b>Omezení demo verze</b>: Nelze smazat hlavního administrátora!</p>";
			}
			else
			{
				$delete = $this->mapper->delete_user($_GET["id"]);

				if($delete)
				{
					echo "<p class='ui-corner-all uspech'>Uživatel byl úspěšně smazán.</p>";
					echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
				}
				else
				{
					echo "<p class='ui-corner-all uspech'>Uživatele se nepodařilo smazat.</p>";
					echo "<p align='center'><a href='index.php?modul=users'>Zpět na přehled</a></p>";
				}
			}
		}
		catch(Exception $e)
		{
			echo "<p class='ui-state-error ui-corner-all'>".$e->getMessage()."</p>";
		}
	}

	public function block_user()
	{

	}

	public function action_block_user()
	{

	}

	public function group_index()
	{

	}

	public function add_group()
	{

	}

	public function action_add_group()
	{

	}

	public function edit_group()
	{

	}

	public function action_edit_group()
	{

	}

	public function delete_group()
	{

	}

	public function action_delete_group()
	{

	}
}

?>